package ai.people.platform.system.controller;

import ai.people.netmon.framework.domain.system.entity.SystemDictData;
import ai.people.netmon.framework.model.response.ListResponse;
import ai.people.netmon.framework.model.response.Result;
import ai.people.netmon.framework.utils.ResultUtil;
import ai.people.platform.system.service.SysDictService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 系统字典接口
 *
 * @author yuanqinglong
 * @date 2022/3/15 13:22
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/dict")
public class SysDictController {

    /**
     * 字典数据服务
     */
    private final SysDictService sysDictServiceImpl;


    /**
     * 通过类型查询字典列表
     * @mock wallet_type
     * @param dictType dict类型(<br>wallet_type：钱包类型、<br>archives_social：社交媒体、<br>source_list：信源列表、<br>validity：有效性、<br>importance_deg：重要度
     *                 、<br>collection_status：采集状态、<br>collection_frequency：采集频率、<br>business_type：业务类型、<br>site_type：站点类型、<br>es_index：检索索引
     *                 <br>work_order_state: 工单状态、
     *                 <br>degree_of_danger: 危险程度、
     *                 <br>exp_list: 扩线点关系点
     *                 <br>exp_type: 扩线点类型、
     *                 )
     * @return {@link Result}<{@link ListResponse}<{@link SystemDictData}>>
     */
    @GetMapping("/{dictType}")
    public Result<ListResponse<SystemDictData>> dictList(@PathVariable("dictType") String dictType) {
        return ResultUtil.success(ListResponse.builder(sysDictServiceImpl.listDictByCode(dictType)));
    }

    /**
     * 通过类型查询字典列表（多key）
     * @mock wallet_type
     * @param dictTypes dict类型(<br>wallet_type：钱包类型、<br>archives_social：社交媒体、<br>source_list：信源列表、<br>validity：有效性、<br>importance_deg：重要度
     *                 、<br>collection_status：采集状态、<br>collection_frequency：采集频率、<br>business_type：业务类型、<br>site_type：站点类型、<br>es_index：检索索引
     *                 <br>work_order_state: 工单状态、
     *                 <br>degree_of_danger: 危险程度、
     *                 <br>exp_list: 扩线点关系点、
     *                 <br>exp_type: 扩线点类型、
     *                 )
     * @return {@link Result}<{@link ListResponse}<{@link SystemDictData}>>
     */
    @PostMapping("/multi")
    public Result<ListResponse<SystemDictData>> dictList(@RequestBody List<String> dictTypes) {
        return ResultUtil.success(sysDictServiceImpl.listDictByCodeMulti(dictTypes));
    }
}
